home *** CD-ROM | disk | FTP | other *** search
/ Programming Sound Cards / Programming Sound Cards.iso / sound_87 / devsbdac.pas < prev    next >
Pascal/Delphi Source File  |  1995-01-01  |  6KB  |  193 lines

  1. {****************************************************************************}
  2. {                                                                            }
  3. { MODULE:         DevSbDac                                                   }
  4. {                                                                            }
  5. { DESCRIPTION:    Device driver for the joined <Sound Blaster & DAC> stereo. }
  6. {                 It uses timer polling.                                     }
  7. {                                                                            }
  8. { AUTHOR:         Juan Carlos Arévalo                                        }
  9. {                                                                            }
  10. { MODIFICATIONS:  Nobody (yet ;-)                                            }
  11. {                                                                            }
  12. { HISTORY:        11-Nov-1992 Description                                    }
  13. {                                                                            }
  14. { (C) 1992 VangeliSTeam                                                      }
  15. {____________________________________________________________________________}
  16.  
  17. UNIT DevSbDAC;
  18.  
  19. INTERFACE
  20.  
  21.  
  22.  
  23. CONST                              { Device ID Strings. }
  24.   SbDACDevID      = 'DAC-SB';
  25.   MixSbDACDevID   = 'Mix-DAC-SB';
  26.   Mix2SbDACDevID  = 'Mix2-DAC-SB';
  27.  
  28.  
  29.  
  30.  
  31. IMPLEMENTATION
  32.  
  33. USES SoundDevices, StrConst,
  34.      DevSB, DevDAC,          { This driver gets most from those. }
  35.      SoundBlaster;
  36.  
  37.  
  38.  
  39.  
  40. {$L DEVSBDAC} { Assembler IRQs. }
  41.  
  42. PROCEDURE SbDACIntHandler;     FAR; EXTERNAL;
  43. PROCEDURE MixSbDACIntHandler;  FAR; EXTERNAL;
  44. PROCEDURE Mix2SbDACIntHandler; FAR; EXTERNAL;
  45.  
  46.  
  47.  
  48.  
  49. {----------------------------------------------------------------------------}
  50. { Name functions.                                                            }
  51. {____________________________________________________________________________}
  52.  
  53. FUNCTION SBDacName : TDevName; FAR;
  54.   BEGIN
  55.     SBDacName     := GetString(StrDevSBDacName);
  56.   END;
  57.  
  58. FUNCTION MixSBDacName : TDevName; FAR;
  59.   BEGIN
  60.     MixSBDacName  := GetString(StrDevMixSBDacName);
  61.   END;
  62.  
  63. FUNCTION Mix2SBDacName : TDevName; FAR;
  64.   BEGIN
  65.     Mix2SBDacName := GetString(StrDevMix2SBDacName);
  66.   END;
  67.  
  68.  
  69.  
  70.  
  71. {----------------------------------------------------------------------------}
  72. { Autodetect function. Redirected to SB.                                     }
  73. {____________________________________________________________________________}
  74.  
  75. FUNCTION SbDACDetect : BOOLEAN; FAR;
  76.   BEGIN
  77.     SbDACDetect := SbRegDetect;
  78.   END;
  79.  
  80.  
  81.  
  82.  
  83. {----------------------------------------------------------------------------}
  84. { Device Initialisation routine.                                             }
  85. {____________________________________________________________________________}
  86.  
  87. PROCEDURE DevInit(Hz: WORD); FAR;
  88.   BEGIN
  89.     SbInit(Hz);  { Initialize the Sound Blaster. }
  90.   END;
  91.  
  92.  
  93.  
  94.  
  95. {----------------------------------------------------------------------------}
  96. { Device deinitialisation routine.                                           }
  97. {____________________________________________________________________________}
  98.  
  99. PROCEDURE DevEnd; FAR;
  100.   BEGIN
  101.     SbEnd;   { Deinitialize the Sound Blaster. }
  102.   END;
  103.  
  104.  
  105.  
  106.  
  107. {----------------------------------------------------------------------------}
  108. { Accesory routines.                                                         }
  109. {____________________________________________________________________________}
  110.  
  111. PROCEDURE DevChgHz(Hz: WORD); FAR;
  112.   BEGIN
  113.     CalcTimerData(Hz);
  114.     InitTimer;
  115.   END;
  116.  
  117. PROCEDURE DevPoll; FAR;
  118.   BEGIN
  119.   END;
  120.  
  121.  
  122.  
  123.  
  124. {----------------------------------------------------------------------------}
  125. { Device records.                                                            }
  126. {____________________________________________________________________________}
  127.  
  128. CONST
  129.   SbDACData : TSoundDevice = (
  130.     DevID      : SbDACDevID;
  131.     DMA        : FALSE
  132.   );
  133.  
  134. CONST
  135.   MixSbDACData : TSoundDevice = (
  136.     DevID      : MixSbDACDevID;
  137.     DMA        : FALSE
  138.   );
  139.  
  140. CONST
  141.   Mix2SbDACData : TSoundDevice = (
  142.     DevID      : Mix2SbDACDevID;
  143.     DMA        : FALSE
  144.   );
  145.  
  146.  
  147.  
  148.  
  149. {----------------------------------------------------------------------------}
  150. { Init code.                                                                 }
  151. {____________________________________________________________________________}
  152.  
  153. BEGIN
  154.  
  155.   WITH SbDACData DO BEGIN
  156.     Name            := SbDACName;
  157.     AutoDetect      := SbDACDetect;
  158.     InitRut         := DevInit;
  159.     ChgHzProc       := DevChgHz;
  160.     GetRealFreqProc := GetRealFreq;
  161.     TimerHandler    := SbDACIntHandler;
  162.     PollRut         := DevPoll;
  163.     EndRut          := DevEnd;
  164.   END;
  165.  
  166.   WITH MixSbDACData DO BEGIN
  167.     Name            := MixSbDACName;
  168.     AutoDetect      := SbDACDetect;
  169.     InitRut         := DevInit;
  170.     ChgHzProc       := DevChgHz;
  171.     GetRealFreqProc := GetRealFreq;
  172.     TimerHandler    := MixSbDACIntHandler;
  173.     PollRut         := DevPoll;
  174.     EndRut          := DevEnd;
  175.   END;
  176.  
  177.   WITH Mix2SbDACData DO BEGIN
  178.     Name            := Mix2SbDACName;
  179.     AutoDetect      := SbDACDetect;
  180.     InitRut         := DevInit;
  181.     ChgHzProc       := DevChgHz;
  182.     GetRealFreqProc := GetRealFreq;
  183.     TimerHandler    := Mix2SbDACIntHandler;
  184.     PollRut         := DevPoll;
  185.     EndRut          := DevEnd;
  186.   END;
  187.  
  188.   InitDevice(@Mix2SbDACData);
  189.   InitDevice(@MixSbDACData);
  190.   InitDevice(@SbDACData);
  191.  
  192. END.
  193.